package main

import "fmt"

// map
func mapG() {
	fmt.Println()
	fmt.Println("=========rangeG========")
	fmt.Println()

	// map[key] value 不初始化的话就是nil，无法存放键值对
	var mymap map[string]string

	mymap = make(map[string]string)
	mymap["a"] = "apple"
	mymap["b"] = "banana"
	mymap["c"] = "cat"
	mymap["d"] = "dog"

	//range key 用key获取value
	for key := range mymap {
		fmt.Printf("key = %s , value = %s\n", key, mymap[key])
	}

	//range key，value
	for key, value := range mymap {
		fmt.Printf("key = %s , value = %s\n", key, value)
	}

	// apple true 因为a这个key存在与mymap中
	value, boolean := mymap["a"]
	fmt.Println(value, boolean)
	// 空字符串 false 因为mymap中没有g这个key 所以value是空字符串（字符串的默认值是空字符串）
	value, boolean = mymap["g"]
	fmt.Println(value, boolean)

	// 0 false 因为不存在这个键值对，所以false，而不存在的话就是默认值，int的默认值是0
	ma := make(map[int]int)
	valueInt, booleanInt := ma[1]
	fmt.Println(valueInt, booleanInt)

	// 不会报错
	delete(mymap, "g")
	fmt.Println(mymap)
	// 删除key = "a"的键值对
	delete(mymap, "a")
	fmt.Println(mymap)
}
